package org.wangchaocheng.cloudgallery.assembler;

import com.alibaba.cola.dto.PageQuery;
import com.alibaba.cola.dto.PageResponse;

import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import org.wangchaocheng.cloudgallery.dto.common.PageDTO;

/**
 * 响应对象组装器
 *
 * @author wangchaocheng
 * @date 2025/04/01
 */
@Mapper
public interface ResponseAssembler {

    ResponseAssembler INSTANCE = Mappers.getMapper(ResponseAssembler.class);

    /**
     * 组装分页响应
     *
     * @param pageQuery 分页查询条件
     * @param pageDTO   自定义分页结果DTO
     * @param <T>       分页数据类型
     * @return {@link PageResponse}<{@link T}> 分页响应
     */
    default <T> PageResponse<T> toPageResponse( PageQuery pageQuery, PageDTO<T> pageDTO) {
        return PageResponse.of(pageDTO.getRecords(), Integer.parseInt(String.valueOf(pageDTO.getTotal())), pageQuery.getPageSize(), pageQuery.getPageIndex());
    }
}
